一默

April 18, 2010

说说GoF模式中的行为模式5

Filed under: Tech — admin @ 12:31 pm

5.Observer模式
这个java类库已经实现了框架,不过我觉得自己实现也很简单:

//对事件感兴趣就实现这个接口,里面的action方法是对该事件的处理过程

interface Listener {
public void action();
}

//这就是具体的事件产生类,通过notifyListeners通知对事件感兴趣的类

class EventProducer {
List list = new ArrayList();
public void addListener(Listener l) {
list.add(l);
}
public void notifyListeners() {
for(Iterator i = list.iterator();i.hasNext();i++)
i.action();
}
}

是不是感觉有点熟悉,嘿,Swing里面组件的事件通知原理就是这样子的,比如
JButton就是这里的EventProducer,ActionListener就是这里的Listener,我们对
点击Button事件感兴趣就实现ActionListener接口,写自己的actionPerform方法
(这里的action方法)如果EventProducer可以产生不同的Event怎么区别?那就在
Listener的action方法加一个Event参数:

interface Listener {
public void action(Event e);
}

这下子就和swing里面的没什么区别了,呵呵

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress